package de.vogella.gwt.helloserver.client;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;

import de.vogella.gwt.helloserver.client.model.Arbeitsgang;
import de.vogella.gwt.helloserver.client.model.Belegposition;
import de.vogella.gwt.helloserver.client.model.Bestellung;
import de.vogella.gwt.helloserver.client.model.Lagerbestand;
import de.vogella.gwt.helloserver.client.model.Lagerplatz;
import de.vogella.gwt.helloserver.client.model.Geschaeftspartner;
import de.vogella.gwt.helloserver.client.model.Produkt;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface ServiceAsync {
	public void FindProdukt(Produkt p, AsyncCallback<List<Produkt>> callback);

	public void GetProdukt(String ID, AsyncCallback<Produkt> callback);

	public void getLogin(String benutzer, AsyncCallback<String> callback);

	public void getAllEinheiten(AsyncCallback<List<String>> callback);

	public void getAllProduktgruppen(AsyncCallback<List<String>> callback);

	public void addProduct(Produkt newProduct, AsyncCallback<Boolean> callback);

	public void editProduct(Produkt editProdukt, AsyncCallback<Boolean> callback);

	public void deleteProduct(String id, AsyncCallback<Void> callback);

	public void findLieferant(Geschaeftspartner lief,
			AsyncCallback<List<Geschaeftspartner>> callback);

	public void getVersandarten(AsyncCallback<List<String>> callback);

	public void getZahlungsarten(AsyncCallback<List<String>> callback);

	public void getLieferanten(AsyncCallback<List<Geschaeftspartner>> callback);

	public void getLieferantenID(String unternehmen,
			AsyncCallback<String> callback);

	public void getProdukt(String ID, AsyncCallback<Produkt> asyncCallback);

	public void insertBestellkopf(Bestellung kopf,
			AsyncCallback<Void> asyncCallback);

	public void getLagerplaetze(
			AsyncCallback<ArrayList<Lagerplatz>> asyncCallback);

	public void getProdukte(AsyncCallback<ArrayList<Produkt>> asyncCallback);

	public void getLagerbestand(
			AsyncCallback<ArrayList<Lagerbestand>> asyncCallback);

	public void getFilledLagerplaetzePerformance(
			AsyncCallback<ArrayList<Lagerplatz>> asyncCallback);

	public void getBelegarten(AsyncCallback<ArrayList<String>> asyncCallback);

	public void getNichtGeliefert(
			AsyncCallback<ArrayList<Bestellung>> asyncCallback);

	public void insertLagerbestand(Lagerbestand bestand,
			AsyncCallback<Lagerbestand> callback);

	public void getBestellkopf(String id, AsyncCallback<Bestellung> callback);

	public void getBelegpositionen(String bestellkopfID,
			AsyncCallback<ArrayList<Belegposition>> callback);

	public void insertBelegposition(Belegposition neu,
			AsyncCallback<Boolean> callback);

	public void insertGeschaeftspartner(Geschaeftspartner neu,
			AsyncCallback<Boolean> callback);
	public void getArbeitsgang(String produktID, AsyncCallback<ArrayList<Arbeitsgang>> callback);
	public void getBauplan(String produktID, AsyncCallback<ArrayList<String>> callback);

}
